/**
 * 详情页插件
 * last update time 2016-01-17
 * 描述：适用于简单查看页面
 * 功能：1.根据参数自动对页面控件进行赋值，
 *       2.添加返回列表按钮事件
 * 实例：查看下方注释
 */
;
var ViewPlugin = (function () {
    "use strict";

    // 默认参数
    var defaults = {
        // 处理程序url
        handlerUrl: '',
        // 获取详情额外参数
        viewParams: {},
        // 返回页面url
        returnPageUrl: '',
        // 展示控件
        pageControls: [],
        // 返回按钮
        btnReturn: '#btnReturn'
    };

    // 获取数据
    var getData = function (self) {
        var handlerUrl = self.settings.handlerUrl,
            viewParams = self.settings.viewParams;
        return $.ajax({
            url: handlerUrl,
            type: "post",
            data: viewParams,
            dataType: "json"
        });
    };

    // 渲染页面
    var render = function (result, self) {
        try {
            if (!result.errMsg) {
                var pageControls = self.settings.pageControls;
                $.each(pageControls, function (index, item) {
                    var element = $(item.controlID),
                        value = result[item.controlID.toString().replace('#', '')];
                    if (item.reset) {
                        //item.reset(element, value);
                        element.html(item.reset(element, value));
                    } else {
                        element.html(value);
                    }
                });
            }
        } catch (error) {
            console.log(error);
        }
    };

    // 构造函数
    function ViewPlugin(options) {
        this.settings = $.extend({}, defaults, options);
    }

    // 初始化
    ViewPlugin.prototype.init = function () {
        this.showData();
        this.bindClickEvent();
        this.bindOtherEvent();
        return this;
    };

    // 绑定数据
    ViewPlugin.prototype.showData = function () {
        var self = this;
        $.when(getData(self)).done(function (data) {
            render(data, self);
        });
    };

    // 绑定点击事件
    ViewPlugin.prototype.bindClickEvent = function () {
        var self = this,
            settings = self.settings;
        // 返回按钮事件
        $(settings.btnReturn).on('click', function () {
            window.self.location.href = settings.returnPageUrl;
        });
    };

    // 绑定其他事件
    ViewPlugin.prototype.bindOtherEvent = function () {

    };

    // 返回构造函数
    return ViewPlugin;
})();

/**
 * 使用实例
 */

//$(document).ready(function () {
//    'use strict';
//    // 配置插件
//    var myViewPlugin = new ViewPlugin({
//        // 处理程序url
//        handlerUrl: 'handler/userHandler.ashx',
//        // 返回页面url
//        returnPageUrl: 'user_list.aspx?state=has',
//        // 获取详情额外参数
//        viewParams: {
//            action: 'detail',
//            id: fnGetUrlParam('id')
//        },
//        // 页面控件
//        pageControls: [
//            {
//                controlID: '#userName',
//                // 赋值需要特殊处理，添加reset属性，element指这个$('#userName')对象，value是值
//                reset: function (element, value) {
//                    var renderHtml = '<span class="danger">' + value + '</span>';
//                    return renderHtml;
//                }
//            },
//            {
//                controlID: '#age'
//            },
//            {
//                controlID: '#email'
//            },
//            {
//                controlID: '#mobile'
//            },
//            {
//                controlID: '#idCard'
//            },
//            {
//                controlID: '#head'
//            },
//            {
//                controlID: '#birthday'
//            },
//            {
//                controlID: '#remark'
//            }
//        ]
//    });

//    // 重写单击事件绑定(默认有返回按钮事件)
//    //myViewPlugin.bindClickEvent = function () {
//    //    $('#btnReturn').on('click', function () {
//    //        window.self.location.href = 'user_list.aspx?state=has';
//    //    });
//    //};

//    // 初始化插件
//    myViewPlugin.init();
//});